package com.bbva.kyfb.kyfbdaohostimpl.servicios.host.tlsmt771_1_1_1;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.bbva.jee.arq.spring.core.auditoria.Auditable;
import com.bbva.jee.arq.spring.core.auditoria.InformacionAuditable;
import com.bbva.jee.arq.spring.core.host.ExcepcionTransaccion;
import com.bbva.jee.arq.spring.core.host.ServicioTransacciones;
import com.googlecode.ehcache.annotations.Cacheable;
import com.googlecode.ehcache.annotations.TriggersRemove;

/**
 * Transacci&oacute;n <code>TLSMT771</code>.
 *
 * @see PeticionTransaccionTlsmt771_1_1_1
 * @see RespuestaTransaccionTlsmt771_1_1_1
 */
@Component
public class TransaccionTlsmt771_1_1_1 {
	
	/** The servicio transacciones. */
	@Autowired
	private ServicioTransacciones servicioTransacciones;
	
	/**
	 * Invocar.
	 *
	 * @param transaccion the transaccion
	 * @return the respuesta transaccion tlsmt771_1_1_1
	 * @throws ExcepcionTransaccion the excepcion transaccion
	 */
	@Auditable({InformacionAuditable.ARGUMENTOS, InformacionAuditable.RESULTADO, InformacionAuditable.DURACION})
	public RespuestaTransaccionTlsmt771_1_1_1 invocar(PeticionTransaccionTlsmt771_1_1_1 transaccion) throws ExcepcionTransaccion {
		return servicioTransacciones.invocar(PeticionTransaccionTlsmt771_1_1_1.class, RespuestaTransaccionTlsmt771_1_1_1.class, transaccion);
	}
	
	/**
	 * Invocar cache.
	 *
	 * @param transaccion the transaccion
	 * @return the respuesta transaccion tlsmt771_1_1_1
	 * @throws ExcepcionTransaccion the excepcion transaccion
	 */
	@Auditable({InformacionAuditable.ARGUMENTOS, InformacionAuditable.RESULTADO, InformacionAuditable.DURACION})
	@Cacheable(cacheName = "cacheTransaccionTlsmt771_1_1_1")
	public RespuestaTransaccionTlsmt771_1_1_1 invocarCache(PeticionTransaccionTlsmt771_1_1_1 transaccion) throws ExcepcionTransaccion {
		return servicioTransacciones.invocar(PeticionTransaccionTlsmt771_1_1_1.class, RespuestaTransaccionTlsmt771_1_1_1.class, transaccion);
	}
	
	/**
	 * Vaciar cache.
	 */
	@Auditable(InformacionAuditable.DURACION)
	@TriggersRemove(cacheName = "cacheTransaccionTlsmt771_1_1_1", removeAll = true)
	public void vaciarCache() {}
		
}